home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Cappuccino.h
-
- Contains: Sample part editor class implementation
-
- Written by: Steve Smith and Troy Gaul
-
- Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
- */
-
- #ifndef _CAPPUCCINO_
- #define _CAPPUCCINO_
-
- // -- Compiler/Preprocessor Switches --
-
- #ifndef _COMPILERDEFS_
- #include "CompDefs.h"
- #endif
-
- // -- OpenDoc Includes --
-
- #ifndef _ODTYPES_
- #include <ODTypes.h>
- #endif
-
- // -- Macintosh Includes --
-
- #ifndef __TYPES__
- #include <Types.h>
- #endif
-
- //------------------------------------------------------------------------------
- // ODOptVirtual
- // This preprocessor symbol is used to control the use of virtual functions
- // for this class. It can be set to "virtual" if you want to have a class
- // where any of the functions may be overridden.
- //------------------------------------------------------------------------------
-
- #ifndef ODOptVirtual
- #define ODOptVirtual
- #endif
-
- //------------------------------------------------------------------------------
- // Forward Declarations
- //------------------------------------------------------------------------------
-
- class Environment;
- class ODAppleEvent;
- class ODCanvas;
- class ODDesc;
- class ODDragItemIterator;
- class ODEmbeddedFramesIterator;
- class ODExtension;
- class ODFacet;
- class ODFocusSet;
- class ODFrame;
- class ODLink;
- class ODLinkSource;
- class ODMenuBar;
- class ODObjectSpec;
- class ODOSLToken;
- class ODSession;
- class ODShape;
- class ODStorageUnit;
- class ODStorageUnitView;
- class ODTypeList;
- class ODWindow;
- class CList;
-
- struct WindowProperties;
-
- class CCappuccinoContent;
- class CFrameInfo;
- class CPrinter;
- class CSettings;
- class som_CappuccinoSettingsExtension;
- class som_CappuccinoSI;
-
- #pragma import on
-
- //------------------------------------------------------------------------------
- // Cappuccino
- //------------------------------------------------------------------------------
-
- class Cappuccino {
-
- //==================================
- // Overridden Public ODPart Methods
- //==================================
- public:
-
- static Cappuccino* CreatePartObject();
-
- Cappuccino();
- ODOptVirtual ~Cappuccino();
-
- // -- Initialization --
-
- ODOptVirtual void InitPart(Environment* ev, ODStorageUnit* storageUnit,
- ODPart* partWrapper);
- ODOptVirtual void InitPartFromStorage(Environment* ev, ODStorageUnit* storageUnit,
- ODPart* partWrapper);
-
- // -- Storage --
-
- ODOptVirtual void Release(Environment* ev);
- ODOptVirtual void ReleaseAll(Environment* ev);
- ODOptVirtual ODSize Purge(Environment* ev, ODSize size);
- ODOptVirtual void Externalize(Environment* ev);
- ODOptVirtual void ExternalizeKinds(Environment* ev, ODTypeList* kindset);
- ODOptVirtual void ChangeKind(Environment* ev, ODType kind);
- ODOptVirtual void CloneInto(Environment* ev, ODDraftKey key,
- ODStorageUnit* destinationSU,
- ODFrame* initiatingFrame);
- ODOptVirtual void WritePartInfo(Environment* ev, ODInfoType partInfo,
- ODStorageUnitView* storageUnitView);
- ODOptVirtual ODInfoType ReadPartInfo(Environment* ev, ODFrame* frame,
- ODStorageUnitView* storageUnitView);
- ODOptVirtual void ClonePartInfo(Environment* ev, ODDraftKey key, ODInfoType partInfo,
- ODStorageUnitView* storageUnitView,
- ODFrame* scopeFrame);
-
- // -- Extensions --
-
- ODOptVirtual ODBoolean HasExtension(Environment *ev, ODType extensionName);
- ODOptVirtual ODExtension* AcquireExtension(Environment *ev, ODType extensionName);
- ODOptVirtual ODBoolean ReleaseExtension(Environment *ev, ODExtension* extension);
-
- // -- Layout --
-
- ODOptVirtual void DisplayFrameAdded(Environment* ev, ODFrame* frame);
- ODOptVirtual void DisplayFrameRemoved(Environment* ev, ODFrame* frame);
- ODOptVirtual void DisplayFrameClosed(Environment* ev, ODFrame* frame);
- ODOptVirtual void DisplayFrameConnected(Environment* ev, ODFrame* frame);
- ODOptVirtual void AttachSourceFrame(Environment* ev, ODFrame* frame,
- ODFrame* sourceFrame);
- ODOptVirtual void ViewTypeChanged(Environment* ev, ODFrame* frame);
- ODOptVirtual void PresentationChanged(Environment* ev, ODFrame* frame);
- ODOptVirtual void SequenceChanged(Environment* ev, ODFrame* frame);
- ODOptVirtual void ContainingPartPropertiesUpdated(Environment* ev, ODFrame* frame,
- ODStorageUnit* propertyUnit);
- ODOptVirtual void FrameShapeChanged(Environment* ev, ODFrame* frame);
- ODOptVirtual ODID Open(Environment* ev, ODFrame* frame);
-
- // -- Imaging --
-
- ODOptVirtual void Draw(Environment* ev, ODFacet* facet, ODShape* invalidShape);
- ODOptVirtual void GeometryChanged(Environment* ev, ODFacet* facet,
- ODBoolean clipShapeChanged,
- ODBoolean externalTransformChanged);
- ODOptVirtual void HighlightChanged(Environment* ev, ODFacet* facet);
- ODOptVirtual void CanvasChanged(Environment* ev, ODFacet* facet);
- ODOptVirtual void CanvasUpdated(Environment* ev, ODCanvas* canvas);
- ODOptVirtual ODULong GetPrintResolution(Environment* ev, ODFrame* frame);
- ODOptVirtual void FacetAdded(Environment* ev, ODFacet* facet);
- ODOptVirtual void FacetRemoved(Environment* ev, ODFacet* facet);
-
- // -- Activation --
-
- ODOptVirtual ODBoolean BeginRelinquishFocus(Environment* ev, ODTypeToken focus,
- ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- ODOptVirtual void CommitRelinquishFocus(Environment* ev, ODTypeToken focus,
- ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- ODOptVirtual void AbortRelinquishFocus(Environment* ev, ODTypeToken focus,
- ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- ODOptVirtual void FocusAcquired(Environment* ev,ODTypeToken focus,
- ODFrame* ownerFrame);
- ODOptVirtual void FocusLost(Environment* ev,ODTypeToken focus,
- ODFrame* ownerFrame);
-
- // -- Event Handling --
-
- ODOptVirtual ODBoolean HandleEvent(Environment* ev, ODEventData* event,
- ODFrame* frame, ODFacet* facet,
- ODEventInfo* eventInfo);
- ODOptVirtual void AdjustMenus(Environment* ev, ODFrame* frame);
-
-
- // -- Drag & Drop --
-
- ODOptVirtual void FulfillPromise(Environment* ev, ODStorageUnitView* promiseSUView);
- ODOptVirtual void DropCompleted(Environment* ev, ODPart* destPart,
- ODDropResult dropResult);
- ODOptVirtual ODDragResult DragEnter(Environment* ev, ODDragItemIterator* dragInfo,
- ODFacet* facet, ODPoint* where);
- ODOptVirtual ODDragResult DragWithin(Environment* ev, ODDragItemIterator* dragInfo,
- ODFacet* facet, ODPoint* where);
- ODOptVirtual void DragLeave(Environment* ev, ODFacet* facet, ODPoint* where);
- ODOptVirtual ODDropResult Drop(Environment* ev, ODDragItemIterator* dropInfo,
- ODFacet* facet, ODPoint* where);
-
- // -- Undo --
-
- ODOptVirtual void UndoAction(Environment* ev, ODActionData* actionState);
- ODOptVirtual void RedoAction(Environment* ev, ODActionData* actionState);
- ODOptVirtual void DisposeActionState(Environment* ev, ODActionData* actionState,
- ODDoneState doneState);
-
- // -- Linking --
-
- ODOptVirtual ODLinkSource* CreateLink(Environment* ev, ODByteArray* data);
- ODOptVirtual void LinkUpdated(Environment* ev, ODLink* link, ODUpdateID updateID);
- ODOptVirtual void RevealLink(Environment* ev, ODLinkSource* linkSource);
- ODOptVirtual void LinkStatusChanged(Environment* ev, ODFrame* frame);
- ODOptVirtual void EmbeddedFrameUpdated(Environment* ev, ODFrame* frame,
- ODUpdateID change);
- ODOptVirtual ODBoolean EditInLinkAttempted(Environment* ev, ODFrame* frame);
-
- // -- Embedding --
-
- ODOptVirtual ODFrame* RequestEmbeddedFrame(Environment* ev, ODFrame* containingFrame,
- ODFrame* baseFrame, ODShape* frameShape,
- ODPart* embeddedPart, ODTypeToken viewType,
- ODTypeToken presentation,
- ODBoolean isOverlaid);
- ODOptVirtual void RemoveEmbeddedFrame(Environment* ev, ODFrame* embeddedFrame);
- ODOptVirtual ODShape* RequestFrameShape(Environment* ev, ODFrame* embeddedFrame,
- ODShape* frameShape);
- ODOptVirtual void UsedShapeChanged(Environment* ev, ODFrame* embeddedFrame);
- ODOptVirtual ODShape* AdjustBorderShape(Environment* ev, ODFacet* embeddedFacet,
- ODShape* shape);
- ODOptVirtual ODStorageUnit* AcquireContainingPartProperties(Environment* ev,
- ODFrame* frame);
- ODOptVirtual ODBoolean RevealFrame(Environment* ev, ODFrame* embeddedFrame,
- ODShape* revealShape);
- ODOptVirtual void EmbeddedFrameSpec(Environment* ev,
- ODFrame* embeddedFrame,
- ODObjectSpec* spec);
- ODOptVirtual ODEmbeddedFramesIterator* CreateEmbeddedFramesIterator(Environment* ev,
- ODFrame* frame);
-
-
- //===================================
- // Newly Introduced Internal Methods
- //===================================
-
- // (these methods must be public)
-
- // -- Settings Dialog --
-
- ODOptVirtual void ShowSettingsDialog(Environment* ev, ODFrame* frame);
-
- // -- Data Handling --
-
- ODOptVirtual ODBoolean TryToEdit(Environment* ev, ODFrame* frame);
-
- ODOptVirtual void SetContent(Environment* ev, CCappuccinoContent* newContent);
- ODOptVirtual CCappuccinoContent* GetContent();
-
- ODOptVirtual void SetSettings(Environment* ev, CSettings* newSettings);
- ODOptVirtual CSettings* GetSettings();
-
- ODOptVirtual void HandleChange(Environment* ev);
-
- ODOptVirtual ODPart* GetODPart();
-
- // -- Scripting --
-
- ODOptVirtual void ConstructSemanticInterface(Environment* ev);
-
- ODOptVirtual void GetPropertyFromNULL(Environment* ev, DescType desiredClass,
- ODOSLToken* container, DescType containerClass,
- DescType form, ODDesc* selectionData,
- ODOSLToken* value);
-
- ODOptVirtual void HandleSetData(Environment* ev, ODAppleEvent* message,
- ODAppleEvent* reply);
-
- ODOptVirtual void HandleGetData(Environment* ev, ODAppleEvent* message,
- ODAppleEvent* reply);
-
- // (the rest are protected -- and are used only in the Cappuccino class source)
-
- protected:
-
- // -- Initialization --
-
- ODOptVirtual void Initialize(Environment* ev);
- ODOptVirtual void BuildMenuBar(Environment* ev);
-
- // -- Storage --
-
- ODOptVirtual void CheckAndAddProperties(Environment* ev,
- ODStorageUnit* storageUnit);
- ODOptVirtual void CleanseContentProperty(Environment* ev,
- ODStorageUnit* storageUnit);
- ODOptVirtual void InternalizeStateInfo(Environment* ev,
- ODStorageUnit* storageUnit);
- ODOptVirtual void InternalizeContent(Environment* ev,
- ODStorageUnit* storageUnit);
- ODOptVirtual void ExternalizeStateInfo(Environment* ev,
- ODStorageUnit* storageUnit,
- ODDraftKey key, ODFrame* scopeFrame);
- ODOptVirtual void ExternalizeContent(Environment* ev, ODStorageUnit* storageUnit,
- ODDraftKey key, ODFrame* scopeFrame);
- ODOptVirtual void SetDirty(Environment* ev);
-
- // -- Event Handling --
-
- ODOptVirtual ODBoolean HandleMenuEvent(Environment* ev, ODEventData* event,
- ODFrame* frame);
- ODOptVirtual ODBoolean HandleMouseEvent(Environment* ev, ODEventData* event,
- ODFacet* facet, ODEventInfo* eventInfo);
- ODOptVirtual void DoMouseDown(Environment* ev, ODEventData* event, ODFacet* facet,
- ODEventInfo* eventInfo);
- ODOptVirtual void DoDialogBox(Environment* ev, ODFrame* frame,
- ODSShort dialogID, ODUShort errorNumber = 0);
- ODOptVirtual void ShowSetTextDialog(Environment* ev, ODFrame* frame);
-
- // -- Imaging --
-
- ODOptVirtual void DrawFrameView(Environment* ev, ODFacet* facet);
- ODOptVirtual void DrawIconView(Environment* ev, ODFacet* facet);
- ODOptVirtual void DrawThumbnailView(Environment* ev, ODFacet* facet);
- ODOptVirtual PicHandle GenerateThumbnail(Environment* ev, ODFrame* frame);
- ODOptVirtual void InvalidateFrameViews(Environment* ev, ODShape* invalidShape = kODNULL,
- ODCanvas* biasCanvas = kODNULL);
-
- // -- Activation --
-
- ODOptVirtual void PartActivated(Environment* ev, ODFrame* frame);
- ODOptVirtual void PartDeactivated(Environment* ev, ODFrame* frame);
- ODOptVirtual ODBoolean ActivateFrame(Environment* ev, ODFrame* frame);
- ODOptVirtual void WindowActivating(Environment* ev, ODFrame* frame,
- ODBoolean activating);
- ODOptVirtual void RelinquishAllFoci(Environment* ev, ODFrame* frame);
-
- // -- Layout --
-
- ODOptVirtual CFrameInfo* CreateFrameInfo(Environment* ev, ODFrame* frame);
- ODOptVirtual void ZoomPartWindow(Environment* ev, ODFrame* frame, ODWindow* window,
- ODBoolean isZoomingOpen);
- ODOptVirtual ODWindow* AcquireFramesWindow(Environment* ev, ODFrame* frame);
- ODOptVirtual ODWindow* CreateWindow(Environment* ev, ODFrame* frame, ODType frameType,
- WindowProperties* windowProperties);
- ODOptVirtual void CleanupWindow(Environment* ev, ODFrame* frame);
- ODOptVirtual WindowProperties* GetDefaultWindowProperties(Environment* ev, ODFrame* frame,
- Rect* windowRect);
- ODOptVirtual WindowProperties* GetSavedWindowProperties(Environment* ev, ODFrame* frame);
- ODOptVirtual Rect CalcPartWindowSize(Environment* ev, ODFrame* sourceFrame);
- ODOptVirtual Rect CalcPartWindowPosition(Environment* ev, ODFrame* frame,
- Rect* partWindowBounds);
- ODOptVirtual ODFacet* GetActiveFacetForFrame(Environment* ev, ODFrame* frame);
- ODOptVirtual ODShape* CalcNewUsedShape(Environment* ev, ODFrame* frame);
- ODOptVirtual void UpdateFrame(Environment* ev, ODFrame* frame, ODTypeToken view,
- ODShape* usedShape);
- ODOptVirtual void CleanupDisplayFrame(Environment* ev, ODFrame* frame,
- ODBoolean frameRemoved);
- ODOptVirtual void ContentUpdated(Environment* ev);
-
- // -- Data Interchange --
- ODOptVirtual void AnnotateInterchangeSU(Environment* ev, ODStorageUnit* su, ODFrame* frame);
- ODOptVirtual void CloneContents(Environment* ev, ODStorageUnit* su,
- ODCloneKind cloneKind, ODFrame* scopeFrame,
- ODBoolean isForClipboard);
- ODOptVirtual void HandlePasteAsResult(Environment* ev, ODPasteAsResult& pasteAsResult,
- ODStorageUnit* contentSU);
-
- // -- Drag & Drop --
-
- ODOptVirtual void HighlightFacet(Environment* ev, ODFacet* facet,
- ODBoolean show);
- ODOptVirtual ODBoolean IsDragSupported(Environment* ev, ODDragItemIterator* dragInfo,
- ODFacet* facet);
- ODOptVirtual ODDropResult InitiateDrag(Environment* ev, ODEventData* event,
- ODFacet* facet, ODPoint& where);
- ODOptVirtual ODRgnHandle CreateDragRegion(Environment* ev, ODFacet* facet);
- ODOptVirtual void DoDropPasteAs(Environment* ev, ODFacet* facet, ODBoolean* pasteLink);
-
- // -- Clipboard --
-
- ODOptVirtual void AdjustClipboardComands(Environment* ev, ODFrame* frame);
- ODOptVirtual void DoCut(Environment* ev, ODFrame* frame);
- ODOptVirtual void DoCopy(Environment* ev, ODFrame* frame);
- ODOptVirtual void DoPaste(Environment* ev, ODFrame* frame);
- ODOptVirtual void DoPasteAs(Environment* ev, ODFrame* frame);
- ODOptVirtual void DoClear(Environment* ev, ODFrame* frame);
-
- //========================
- private:
-
- CList* fDisplayFrames;
- ODPart* fSelf;
- ODSession* fSession;
-
- som_CappuccinoSettingsExtension* fSettingsExtension;
- som_CappuccinoSI* fSemanticInterface;
-
- CPrinter* fPrinter;
- ODFacet* fHighlightedDragFacet;
-
- CCappuccinoContent* fContent;
- CSettings* fSettings;
- ODValueType fPreferredKind;
-
- ODBoolean fDirty;
- ODBoolean fReadOnlyStorage;
- };
-
- #pragma import off
-
- //------------------------------------------------------------------------------
- // Inline methods
- //------------------------------------------------------------------------------
-
- inline CCappuccinoContent* Cappuccino::GetContent()
- {
- return fContent;
- }
-
- inline CSettings* Cappuccino::GetSettings()
- {
- return fSettings;
- }
-
- inline ODPart* Cappuccino::GetODPart()
- {
- return fSelf;
- }
-
-
- #endif